<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Collision Checker: collision::CollisionChecker Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Collision Checker
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecollision.html">collision</a></li><li class="navelem"><a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classcollision_1_1_collision_checker-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">collision::CollisionChecker Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="collision__checker_8h_source.html">collision_checker.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for collision::CollisionChecker:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcollision_1_1_collision_checker.png" usemap="#collision::CollisionChecker_map" alt=""/>
  <map id="collision::CollisionChecker_map" name="collision::CollisionChecker_map">
<area href="classcollision_1_1_i_collision_checker.html" title="External interface to a CollisionChecker (with or without an acceleration structure)" alt="collision::ICollisionChecker" shape="rect" coords="0,56,299,80"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aadf36b4bbca1a64a2b497f41f2f53e8b"><td class="memItemLeft" align="right" valign="top">EIGEN_MAKE_ALIGNED_OPERATOR_NEW&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#aadf36b4bbca1a64a2b497f41f2f53e8b">CollisionChecker</a> ()</td></tr>
<tr class="separator:aadf36b4bbca1a64a2b497f41f2f53e8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acded699038b6f0872998532fbee498f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#acded699038b6f0872998532fbee498f5">addCollisionObject</a> (<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> co)</td></tr>
<tr class="memdesc:acded699038b6f0872998532fbee498f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a collision object into the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> group structure.  <a href="#acded699038b6f0872998532fbee498f5">More...</a><br /></td></tr>
<tr class="separator:acded699038b6f0872998532fbee498f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab143c35c5989325e2f2fb7fba632c471"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#ab143c35c5989325e2f2fb7fba632c471">rayTrace</a> (const Eigen::Vector2d &amp;point1, const Eigen::Vector2d &amp;point2, std::vector&lt; <a class="el" href="classcollision_1_1_line_segment.html">LineSegment</a> &gt; &amp;intersect, bool remove_overlaps=true)</td></tr>
<tr class="memdesc:ab143c35c5989325e2f2fb7fba632c471"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds a collision object to the CC  <a href="#ab143c35c5989325e2f2fb7fba632c471">More...</a><br /></td></tr>
<tr class="separator:ab143c35c5989325e2f2fb7fba632c471"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e0712276f0d648a1b6993498eb568fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a4e0712276f0d648a1b6993498eb568fe">collisionTime</a> (<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> co) const</td></tr>
<tr class="memdesc:a4e0712276f0d648a1b6993498eb568fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns timestep at which any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collides with the given object.  <a href="#a4e0712276f0d648a1b6993498eb568fe">More...</a><br /></td></tr>
<tr class="separator:a4e0712276f0d648a1b6993498eb568fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbd1ef6a0ced0038e7145f83a0aef93c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#afbd1ef6a0ced0038e7145f83a0aef93c">collide</a> (<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> co, int *collision_time=0) const</td></tr>
<tr class="memdesc:afbd1ef6a0ced0038e7145f83a0aef93c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object.  <a href="#afbd1ef6a0ced0038e7145f83a0aef93c">More...</a><br /></td></tr>
<tr class="separator:afbd1ef6a0ced0038e7145f83a0aef93c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a7943bd0dcc05a261f7d90a3fc4ead4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a9a7943bd0dcc05a261f7d90a3fc4ead4">collide</a> (<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> co, <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &amp;obstacle, bool ungroup_shape_groups=false, bool ungroup_TV_obstacles=false) const</td></tr>
<tr class="memdesc:a9a7943bd0dcc05a261f7d90a3fc4ead4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object.  <a href="#a9a7943bd0dcc05a261f7d90a3fc4ead4">More...</a><br /></td></tr>
<tr class="separator:a9a7943bd0dcc05a261f7d90a3fc4ead4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaea564dc6218f856fc7dcd28ca57fb8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#acaea564dc6218f856fc7dcd28ca57fb8">collide</a> (<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> co, std::vector&lt; <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &gt; &amp;obstacles, bool ungroup_shape_groups=false, bool ungroup_TV_obstacles=false) const</td></tr>
<tr class="memdesc:acaea564dc6218f856fc7dcd28ca57fb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object.  <a href="#acaea564dc6218f856fc7dcd28ca57fb8">More...</a><br /></td></tr>
<tr class="separator:acaea564dc6218f856fc7dcd28ca57fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a275d33c4855e33cd1692d1b50fb74810"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacecollision.html#a41db47b373df476bf4e0bd5cf7ed2d6b">CollisionCheckerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a275d33c4855e33cd1692d1b50fb74810">windowQuery</a> (const <a class="el" href="classcollision_1_1_rectangle_a_a_b_b.html">RectangleAABB</a> &amp;aabb) const</td></tr>
<tr class="memdesc:a275d33c4855e33cd1692d1b50fb74810"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns new <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> with all static objects within the window and all time-variant obstacles. Ungroups all shape groups.  <a href="#a275d33c4855e33cd1692d1b50fb74810">More...</a><br /></td></tr>
<tr class="separator:a275d33c4855e33cd1692d1b50fb74810"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a970f71867c6598da2ff29f645cc5dc33"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacecollision.html#a26b4aad32d10b8574b3dde076db249b6">PrimitiveCollisionCheckerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a970f71867c6598da2ff29f645cc5dc33">windowQueryPrimitive</a> (const <a class="el" href="classcollision_1_1_rectangle_a_a_b_b.html">RectangleAABB</a> &amp;aabb) const</td></tr>
<tr class="memdesc:a970f71867c6598da2ff29f645cc5dc33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns new <a class="el" href="classcollision_1_1_primitive_collision_checker.html" title="PrimitiveCollisionChecker can group any kinds of CollisionObjects.">PrimitiveCollisionChecker</a> with all static objects within the window and all time-variant obstacles. Ungroups all shape groups.  <a href="#a970f71867c6598da2ff29f645cc5dc33">More...</a><br /></td></tr>
<tr class="separator:a970f71867c6598da2ff29f645cc5dc33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99e1067067af2ebc3454da0c64f8b9cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacecollision.html#a41db47b373df476bf4e0bd5cf7ed2d6b">CollisionCheckerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a99e1067067af2ebc3454da0c64f8b9cd">timeSlice</a> (int time_idx) const</td></tr>
<tr class="memdesc:a99e1067067af2ebc3454da0c64f8b9cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns new <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> with objects that exist at a given timestep.  <a href="#a99e1067067af2ebc3454da0c64f8b9cd">More...</a><br /></td></tr>
<tr class="separator:a99e1067067af2ebc3454da0c64f8b9cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a633266d69fdaadc964559016d049b795"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a633266d69fdaadc964559016d049b795">print</a> (std::ostringstream &amp;stream) const</td></tr>
<tr class="separator:a633266d69fdaadc964559016d049b795"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19831589411e9533c819e3368c6126bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a19831589411e9533c819e3368c6126bf">toString</a> (std::ostringstream &amp;stream) const</td></tr>
<tr class="separator:a19831589411e9533c819e3368c6126bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7c8460a5c01d2c2a5afae4f583231f0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#af7c8460a5c01d2c2a5afae4f583231f0">numberOfObstacles</a> (void) const</td></tr>
<tr class="memdesc:af7c8460a5c01d2c2a5afae4f583231f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns number of contained CollisionObjects of any type.  <a href="#af7c8460a5c01d2c2a5afae4f583231f0">More...</a><br /></td></tr>
<tr class="separator:af7c8460a5c01d2c2a5afae4f583231f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5706822775c534f6aa4318dbbdda97bd"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a5706822775c534f6aa4318dbbdda97bd">getObstacles</a> (void) const</td></tr>
<tr class="memdesc:a5706822775c534f6aa4318dbbdda97bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a Vector with all contained CollisionObjects of any type.  <a href="#a5706822775c534f6aa4318dbbdda97bd">More...</a><br /></td></tr>
<tr class="separator:a5706822775c534f6aa4318dbbdda97bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcollision_1_1_i_collision_checker"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcollision_1_1_i_collision_checker')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcollision_1_1_i_collision_checker.html">collision::ICollisionChecker</a></td></tr>
<tr class="memitem:af981d4e155f018ce42edc30beed72a8b inherit pub_methods_classcollision_1_1_i_collision_checker"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_i_collision_checker.html#af981d4e155f018ce42edc30beed72a8b">~ICollisionChecker</a> ()</td></tr>
<tr class="separator:af981d4e155f018ce42edc30beed72a8b inherit pub_methods_classcollision_1_1_i_collision_checker"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a767cd3dd7c7e58eba68b023ebbe9925a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a767cd3dd7c7e58eba68b023ebbe9925a">collision_objects_</a></td></tr>
<tr class="separator:a767cd3dd7c7e58eba68b023ebbe9925a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a605c5763ed2a920435e50187bf26d7d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcollision_1_1solvers_1_1solver_f_c_l_1_1_f_c_l_collision_checker.html">FCLCollisionChecker</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcollision_1_1_collision_checker.html#a605c5763ed2a920435e50187bf26d7d7">fcl_cc_</a></td></tr>
<tr class="separator:a605c5763ed2a920435e50187bf26d7d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment"> \brief CollisionChecker can contain collision objects and their groups
</pre><p> (such as <a class="el" href="classcollision_1_1_shape_group.html" title="ShapeGroup can contain simple shapes.">ShapeGroup</a> and <a class="el" href="classcollision_1_1_time_variant_collision_object.html" title="TimeVariantCollisionObject can contain a different CollisionObject or ShapeGroup at each time step.">TimeVariantCollisionObject</a>) </p><pre class="fragment"> The benefit of grouping objects in the CollisionChecker is that a
</pre><p> broadphase structure is built for efficient filtering of candidate objects for the collision </p>

<p class="definition">Definition at line <a class="el" href="collision__checker_8h_source.html#l00045">45</a> of file <a class="el" href="collision__checker_8h_source.html">collision_checker.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aadf36b4bbca1a64a2b497f41f2f53e8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadf36b4bbca1a64a2b497f41f2f53e8b">&#9670;&nbsp;</a></span>CollisionChecker()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">EIGEN_MAKE_ALIGNED_OPERATOR_NEW collision::CollisionChecker::CollisionChecker </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="collision__checker_8h_source.html#l00053">53</a> of file <a class="el" href="collision__checker_8h_source.html">collision_checker.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acded699038b6f0872998532fbee498f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acded699038b6f0872998532fbee498f5">&#9670;&nbsp;</a></span>addCollisionObject()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void collision::CollisionChecker::addCollisionObject </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&#160;</td>
          <td class="paramname"><em>co</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Adds a collision object into the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> group structure. </p>

<p>Implements <a class="el" href="classcollision_1_1_i_collision_checker.html#a0a840e101970529845077069aa0a33ba">collision::ICollisionChecker</a>.</p>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00015">15</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="afbd1ef6a0ced0038e7145f83a0aef93c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbd1ef6a0ced0038e7145f83a0aef93c">&#9670;&nbsp;</a></span>collide() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool collision::CollisionChecker::collide </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&#160;</td>
          <td class="paramname"><em>co</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>collision_time</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">co</td><td>given object</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">optional</td><td>output pointer for getting the time of the collision</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00059">59</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a9a7943bd0dcc05a261f7d90a3fc4ead4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a7943bd0dcc05a261f7d90a3fc4ead4">&#9670;&nbsp;</a></span>collide() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool collision::CollisionChecker::collide </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&#160;</td>
          <td class="paramname"><em>co</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>obstacle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ungroup_shape_groups</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ungroup_TV_obstacles</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">co</td><td>given object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ungroup_shape_groups</td><td>when false, ShapeGroups will be treated as separate objects and included in the result. Otherwise, one of the colliding obstacles within the ShapeGroups will be added to the output Vector.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ungroup_TV_obstacles</td><td>when false, TimeVarintCollisionObjects will be treated as separate objects and included in the result. Otherwise, one of the colliding obstacles within the TimeVarintCollisionObject will be added to the output Vector.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">obstacle</td><td>output reference for the colliding object</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00104">104</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="acaea564dc6218f856fc7dcd28ca57fb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acaea564dc6218f856fc7dcd28ca57fb8">&#9670;&nbsp;</a></span>collide() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool collision::CollisionChecker::collide </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&#160;</td>
          <td class="paramname"><em>co</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>obstacles</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ungroup_shape_groups</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>ungroup_TV_obstacles</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns true if any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collide with the given object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">co</td><td>given object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ungroup_shape_groups</td><td>when false, ShapeGroups will be treated as separate objects and included in the result. Otherwise, the colliding obstacles within the ShapeGroups will be added to the output Vector.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ungroup_TV_obstacles</td><td>when false, TimeVarintCollisionObjects will be treated as separate objects and included in the result. Otherwise, the colliding obstacles within the TimeVarintCollisionObject will be added to the output Vector.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">obstacles</td><td>output Vector for colliding objects</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00229">229</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a4e0712276f0d648a1b6993498eb568fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e0712276f0d648a1b6993498eb568fe">&#9670;&nbsp;</a></span>collisionTime()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int collision::CollisionChecker::collisionTime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&#160;</td>
          <td class="paramname"><em>co</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns timestep at which any of the objects contained in the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> collides with the given object. </p>
<p>The function returns -1 if there is no collision or timestep of the collision is not defined (such as for static obstacles)</p>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00032">32</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a5706822775c534f6aa4318dbbdda97bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5706822775c534f6aa4318dbbdda97bd">&#9670;&nbsp;</a></span>getObstacles()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a> &gt; collision::CollisionChecker::getObstacles </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns a Vector with all contained CollisionObjects of any type. </p>

<p>Implements <a class="el" href="classcollision_1_1_i_collision_checker.html#a137cfb52d18f6218178ee50e114c3575">collision::ICollisionChecker</a>.</p>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00324">324</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="af7c8460a5c01d2c2a5afae4f583231f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7c8460a5c01d2c2a5afae4f583231f0">&#9670;&nbsp;</a></span>numberOfObstacles()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int collision::CollisionChecker::numberOfObstacles </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns number of contained CollisionObjects of any type. </p>

<p>Implements <a class="el" href="classcollision_1_1_i_collision_checker.html#adb32ac2d6218930ac7a1cb6538b5a979">collision::ICollisionChecker</a>.</p>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00315">315</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a633266d69fdaadc964559016d049b795"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a633266d69fdaadc964559016d049b795">&#9670;&nbsp;</a></span>print()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void collision::CollisionChecker::print </td>
          <td>(</td>
          <td class="paramtype">std::ostringstream &amp;&#160;</td>
          <td class="paramname"><em>stream</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00328">328</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="ab143c35c5989325e2f2fb7fba632c471"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab143c35c5989325e2f2fb7fba632c471">&#9670;&nbsp;</a></span>rayTrace()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool collision::CollisionChecker::rayTrace </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector2d &amp;&#160;</td>
          <td class="paramname"><em>point1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector2d &amp;&#160;</td>
          <td class="paramname"><em>point2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classcollision_1_1_line_segment.html">LineSegment</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>intersect</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>remove_overlaps</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>adds a collision object to the CC </p>
<p>Performs raytracing for a given line segment. The function returns true if the line segment between the given two points collides with any object inside the <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a>. In addition, the function returns Vector with the parts of the given line segment that belong to the occupied space.</p>
<p>The function finds all intersection points between the given line segment and all line segments or circles that the colliding objects are made of.</p>
<p>If the given line segment start or end point lies within an object, the line segment between this point inside the object and the point of collision is added.</p>
<p>If remove_overlaps is set to true, the function joins together all overlapping intervals for the final result.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point1</td><td>line segment begin point</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">point2</td><td>line segment end point</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">remove_overlaps</td><td>if true, the the function joins together all overlapping intervals for the final result.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00151">151</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a99e1067067af2ebc3454da0c64f8b9cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99e1067067af2ebc3454da0c64f8b9cd">&#9670;&nbsp;</a></span>timeSlice()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacecollision.html#a41db47b373df476bf4e0bd5cf7ed2d6b">CollisionCheckerPtr</a> collision::CollisionChecker::timeSlice </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>time_idx</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns new <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> with objects that exist at a given timestep. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">time_idx</td><td>- index of timestep of interest </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00298">298</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a19831589411e9533c819e3368c6126bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19831589411e9533c819e3368c6126bf">&#9670;&nbsp;</a></span>toString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void collision::CollisionChecker::toString </td>
          <td>(</td>
          <td class="paramtype">std::ostringstream &amp;&#160;</td>
          <td class="paramname"><em>stream</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00186">186</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a275d33c4855e33cd1692d1b50fb74810"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a275d33c4855e33cd1692d1b50fb74810">&#9670;&nbsp;</a></span>windowQuery()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacecollision.html#a41db47b373df476bf4e0bd5cf7ed2d6b">CollisionCheckerPtr</a> collision::CollisionChecker::windowQuery </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcollision_1_1_rectangle_a_a_b_b.html">RectangleAABB</a> &amp;&#160;</td>
          <td class="paramname"><em>aabb</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns new <a class="el" href="classcollision_1_1_collision_checker.html">CollisionChecker</a> with all static objects within the window and all time-variant obstacles. Ungroups all shape groups. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">aabb</td><td>- reference to an axis-aligned rectangle representing the region of interest</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00281">281</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<a id="a970f71867c6598da2ff29f645cc5dc33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a970f71867c6598da2ff29f645cc5dc33">&#9670;&nbsp;</a></span>windowQueryPrimitive()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacecollision.html#a26b4aad32d10b8574b3dde076db249b6">PrimitiveCollisionCheckerPtr</a> collision::CollisionChecker::windowQueryPrimitive </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcollision_1_1_rectangle_a_a_b_b.html">RectangleAABB</a> &amp;&#160;</td>
          <td class="paramname"><em>aabb</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns new <a class="el" href="classcollision_1_1_primitive_collision_checker.html" title="PrimitiveCollisionChecker can group any kinds of CollisionObjects.">PrimitiveCollisionChecker</a> with all static objects within the window and all time-variant obstacles. Ungroups all shape groups. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">aabb</td><td>- reference to a axis-aligned rectangle representing the region of interest</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>The function is not thread-safe </dd></dl>

<p class="definition">Definition at line <a class="el" href="collision__checker_8cc_source.html#l00259">259</a> of file <a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a767cd3dd7c7e58eba68b023ebbe9925a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a767cd3dd7c7e58eba68b023ebbe9925a">&#9670;&nbsp;</a></span>collision_objects_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="namespacecollision.html#a405f2c04407997fea529aad88f04ad30">CollisionObjectConstPtr</a>&gt; collision::CollisionChecker::collision_objects_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="collision__checker_8h_source.html#l00112">112</a> of file <a class="el" href="collision__checker_8h_source.html">collision_checker.h</a>.</p>

</div>
</div>
<a id="a605c5763ed2a920435e50187bf26d7d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a605c5763ed2a920435e50187bf26d7d7">&#9670;&nbsp;</a></span>fcl_cc_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcollision_1_1solvers_1_1solver_f_c_l_1_1_f_c_l_collision_checker.html">FCLCollisionChecker</a> collision::CollisionChecker::fcl_cc_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="collision__checker_8h_source.html#l00113">113</a> of file <a class="el" href="collision__checker_8h_source.html">collision_checker.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>cpp/collision/include/collision/<a class="el" href="collision__checker_8h_source.html">collision_checker.h</a></li>
<li>cpp/collision/src/<a class="el" href="collision__checker_8cc_source.html">collision_checker.cc</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>
